package cn.xiaojingyu.framework.config;


import io.swagger.v3.oas.models.ExternalDocumentation;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import lombok.extern.slf4j.Slf4j;
import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Knife4j配置类
 *
 * @author dan
 * @date 2024/7/10 10:16
 */
@Slf4j
@Configuration
public class Knife4jConfiguration {

    public Knife4jConfiguration() {
        log.info("构造方法 ==> cn.xiaojingyu.framework.config.Knife4jConfiguration");
    }

    @Bean
    public OpenAPI openAPI() {
        return new OpenAPI().info(new Info()
                // 设置标题
                .title("小鲸鱼的接口文档")
                // 设置简述
                .description("这是小鲸鱼项目的接口文档")
                // 设置版本
                .version("1.0")
                // 设置联系方式
                .contact(new Contact().name("小鲸鱼").email("danyuanzi9@163.com"))).externalDocs(new ExternalDocumentation().description("springboot基础框架").url("http://localhost:8080"));

    }


    /**
     * 创建一个名为“初始分组”的OpenAPI分组。
     *
     * @return GroupedOpenApi实例，定义了分组的名称、要扫描的包和匹配的路径。
     */
    @Bean
    public GroupedOpenApi groupedOpenApi() {
        // 使用GroupedOpenApi.builder()来构建一个新的分组实例。
        return GroupedOpenApi.builder()
                // 设置分组的名称为“初始分组”。
                .group("初始分组")
                // 指定要扫描的包，这里包括两个包路径。
                .packagesToScan("cn.xiaojingyu.framework.controller", "cn.xiaojingyu.test2.controller")
                // 设置路径匹配模式，这里使用"/**"来匹配所有API路径。
                .pathsToMatch("/**")
                // 构建并返回GroupedOpenApi实例。
                .build();
    }


}
